// let [a,b] = [1,2]
// console.log(a,b) // 1 2
// let {c , d} = {c : 3,d : 4}
// console.log(c,d) // 3 4

// const arr = [1, 2, 3];
// const iterator = arr[Symbol.iterator]();
// console.log(iterator.next());
// console.log(iterator.next());
// console.log(iterator.next());
// console.log(iterator.next());

// -----------------------
// function createIterator(array) {
//   let index = 0;
//   return {
//     next: function () {
//       return index < array.length
//         ? { value: array[index++], done: false }
//         : { value: undefined, done: true };
//     },
//   }
// }
// const myIterator = createIterator([2, 4, 6]);
// console.log(myIterator.next());// {value: 2, done: false}
// console.log(myIterator.next());// {value: 4, done: false}
// console.log(myIterator.next());// {value: 6, done: false}
// console.log(myIterator.next());// {value: undefined, done: true}

// ----------------------
// Object.prototype[Symbol.iterator] = function () {
//   let index = 0;
//   return {
//     next: function () {
//       return index < Object.keys(this).length
//        ? { value: Object.values(this)[index++], done: false }
//         : { value: undefined, done: true };
//     },
//   }; 
// }
// ----------------------
// const obj = {
//     a: 1,
//     b: 2,
//     c: 3,
//     [Symbol.iterator] : function () {
//         let index = 0;
//         return {
//           next: function () {
//             return index < Object.keys(obj).length
//              ? { value: Object.values(obj)[index++], done: false }
//               : { value: undefined, done: true };
//           },
//         }; 
//       }
// }
// for (let i of obj) {
//     console.log(i)
// }

Object.prototype[Symbol.iterator] = function () {
  return Object.values(this)[Symbol.iterator]();
}

let [a, b] = { a: 1, b: 2 };

console.log(a, b);

